export default {
	// 开启命名空间
	namespaced: true,
	// 数据
	state: () => ({
		// 收货地址对象
		address: JSON.parse(uni.getStorageSync('address') || '{}'),
		// 用户的token
		token: uni.getStorageSync('token') || '',
		// 用户的信息对象
		userinfo: JSON.parse(uni.getStorageSync('userinfo') || '{}'),
		// 重定向的对象 {opentype，from}
		redirectInfo: null
	}),
	// 方法
	mutations: {
		// 更新收货地址
		updataAddress(state, address) {
			state.address = address
			// address 持久化存储到本地
			this.commit('m_user/saveAddressToStorage')
		},
		// 定义将 address 持久化存储到本地 mutations 方法
        saveAddressToStorage(state) {
			uni.setStorageSync('address', JSON.stringify(state.address))
		},
		// 更新用户信息对象
		updateUserInfo(state, userinfo) {
			// 更新用户信息对象
			state.userinfo = userinfo
			// 将 userinfo 对象持久化存储到本地
			this.commit('m_user/saveUserInfoToStorage')
		},
		saveUserInfoToStorage(state) {
			uni.setStorageSync('userinfo', JSON.stringify(state.userinfo))
		},
		// 更新token
		updateToken(state, token) {
			// 存入 vuex中
			state.token = token
			// 持久化token
			this.commit('m_user/saveTokenToStorage')
		},
		// 持久化token到本地存储的方法
		saveTokenToStorage(state) {
			uni.setStorageSync('token', state.token)
		},
		// 更新重定向的对象信息
		updatRedirectInfo(state, info) {
			state.redirectInfo = info
			console.log(state.redirectInfo);
		}
	},
	// 计算属性 数据包装器
	getters: {
		// 收货详细地址的计算属性(可供全局使用 提高复用性)
		addressStr(state) {
			// 收货地址为空
			if(!state.address.provinceName) return ''
			// 不为空拼接 省，市，区，详细地址 的字符串并返回给用户 
			return state.address.provinceName + state.address.cityName + state.address.countyName + state.address.detailInfo
		}
	}
}